EduStarAmericas
Build: 1.66
Introdução
Caro usuário, seja bem-vindo à documentação do nosso aplicativo dedicado à democratização do acesso aos
microdados oficiais do INEP, com ênfase nas análises e predições de comportamento baseadas na Teoria de
Resposta ao Item (TRI). Este manifesto inicial visa orientá-lo na compreensão e utilização eficiente dessa
plataforma modular, fornecendo informações detalhadas para garantir que seu trabalho não apenas alcance
seus objetivos imediatos, mas também permaneça valioso ao longo do tempo.
Objetivo da Plataforma: Nosso aplicativo foi desenvolvido com o propósito central de facilitar o acesso e a
manipulação de microdados oficiais fornecidos pelo INEP. Reconhecemos a importância desses dados para
estudantes, dataminers e pesquisadores em suas análises, especialmente quando se trata da TRI, uma
abordagem fundamental para compreender o desempenho em avaliações educacionais.
Por que o nome é EduStarAmericas, se publicamente é enemaster.app? A designação "Edu" é derivada
de edtech (ou Eduarda, haha) e "Star" faz alusão à subdivisão da SpaceX chamada Starlink uma empresa
dedicada a democratizar o acesso à internet globalmente. A inclusão de "Américas" é uma referência à
América Latina, completando assim nossa visão abrangente e compromisso com a universalização do acesso
à educação e além.
Modularidade e Flexibilidade: A arquitetura modular da nossa plataforma foi concebida para fornecer
flexibilidade e adaptabilidade às diversas necessidades de pesquisa. Cada módulo foi desenvolvido para
operar de maneira independente, permitindo que você selecione e integre funcionalidades de acordo com
seus requisitos específicos.
Compromisso com a Democracia de Dados: Acreditamos firmemente na democratização do acesso a
informações valiosas. Portanto, buscamos criar uma interface intuitiva e documentação clara, tornando os
microdados e as análises baseadas na TRI acessíveis a uma variedade de usuários, independentemente do
nível de expertise.
Estrutura da Documentação: Esta documentação está organizada de maneira a guiá-lo desde a instalação
inicial até a execução avançada de análises. Cada seção aborda aspectos específicos da plataforma,
fornecendo descrições detalhadas, exemplos práticos e dicas úteis para garantir uma experiência consistente
e eficiente.
Atualizações e Suporte: Como o código está parcialmente disponível, atualizarei essa plataforma em tempo
livre, sempre aceitando sugestões da comunidade.
ATENÇÃO: essa documentação não visa ser um tutorial de como fazer, ou algo parecido. É um guia
para desenvolvedores entenderem o que eu quis fazer nas linhas de código. Busque sempre alguém
com conhecimento técnico ou dedique tempo para estudar (na ordem): Python, pandas, fpdf,
genanki, numpy, R, mirt e Pycaret.
Agradecimentos especiais à Mateus F. Prado pioneiro em democratizar o acesso a TRI para o público
comum, Mateus inspirou fortemente esse projeto.
Estamos confiantes de que, ao explorar esta documentação, você estará mais bem preparado para aproveitar
todo o potencial dos microdados do INEP e da TRI.
Niedson Emanoel, 25/11/2023.
EduStarAmericas
EduStarAmericas
Build: 1.66; V2.1;
2
Sumário
Visão Geral do Projeto: ...................................................................................................................................... 3
1. Gerador: Funcionalidades Principais: ............................................................................................................ 4
1.1 Gerador: Helper (putHabOnItem): ........................................................................................................... 6
1.2 Gerador: Helper Relatório de Itens - relatorio_itens.py: ........................................................................ 7
2. MCi (Módulo comum integrado): .................................................................................................................. 8
2.1 MCi Listas e Flashcards por Habilidades: ............................................................................................... 8
2.2 MCi Listas de Treino e Revisão: ........................................................................................................... 10
2.2.1 Parâmetros específicos das Matérias (Padrão experimental): ......................................................... 11
2.3 MCi Clusterização: ................................................................................................................................ 12
3. TRI ............................................................................................................................................................... 13
3.1 Criação de Simulado (com 30 habilidades) ........................................................................................... 13
3.2 Correção do Simulado............................................................................................................................ 15
Descrição Geral do Fluxo de Execução ....................................................................................................... 15
3.3 Correção TRI das listas por Habilidade ................................................................................................. 16
3.4 Curva CCI .............................................................................................................................................. 17
4. Análises de Grupo ........................................................................................................................................ 18
5. Notebooks .ipynb ......................................................................................................................................... 19
5.1 Links Notebooks: ................................................................................................................................... 19
6. Roadmap ...................................................................................................................................................... 20
7. Agradecimentos ........................................................................................................................................... 21
8. Anexos ......................................................................................................................................................... 22
8.1 Orientação (INEP via LAI) Curva CCI ................................................................................................. 22
8.2 Exemplo de gráfico de curva CCI .......................................................................................................... 23
8.3 Exemplo de questão gerada pelo MCi ................................................................................................... 24
8.4 Exemplo de Distribuição da Relação Acerto x Nota ............................................................................. 25
8.5 Licença de Uso ....................................................................................................................................... 26
9. Referências ................................................................................................................................................... 27
EduStarAmericas
EduStarAmericas
Build: 1.66; V2.1;
3
Visão Geral do Projeto:
O EduStarAmericas (ESA) está dividido em nove módulos independentes:
1. Gerador:
o Responsável pela geração personalizada de conjuntos de dados a partir dos microdados do
ENEM.
2. Ciências Humanas (MCi
1
):
o Focado na análise de desempenho em disciplinas como História, Geografia, Filosofia e
Sociologia.
3. Linguagens (MCi1):
o Concentra-se nas disciplinas de Língua Portuguesa e Língua Estrangeira.
4. Matemática (MCi1):
o Direcionado à análise do desempenho em Matemática e suas tecnologias.
5. Natureza (MCi1):
o Módulo dedicado à análise de Ciências da Natureza.
6. TRI (Teoria de Resposta ao Item):
o Um módulo exclusivo para a aplicação da Teoria de Resposta ao Item, proporcionando
análises avançadas de comportamento e padrões de resposta dos participantes.
7. Itens_BNI:
o Catálogo de questões em .png, .gif e .txt de itens educacionais do INEP
8. Análises de Grupo:
o Análises de todos os participantes pelo arquivo dos microdados.
9. Notebooks .ipynb:
o Compilado independente dos módulos para uso específico.
Requisitos de Sistema
Para contribuir para o desenvolvimento do ESA, as seguintes dependências são necessárias:
Python 3.x e RStudio
Bibliotecas específicas para processamento de dados (detalhadas em cada módulo)
Estrutura do Projeto
O projeto está organizado de maneira modular para facilitar a manutenção e expansão futura. Cada módulo
reside em um diretório específico, contendo arquivos essenciais para sua operação.
Principais Tecnologias Utilizadas
NumPy: Fundamenta a manipulação eficiente de operações matemáticas.
Pandas: Acesso aos Itens .csv e manipulação
FPDF: Criação dos itens em PDF
GENANKI: Manipulação de Arquivos anki.
MCi: Módulo comum integrado: Áreas que compartilham o mesmo código, porém com mínimas alterações de parâmetros para
separar os estágios de desenvolvimento.
EduStarAmericas
EduStarAmericas
Build: 1.66; V2.1;
4
1. Gerador: Funcionalidades Principais:
1. Função tri_3pl_enem(theta, a, b, c)
o Descrição: Implementa a fórmula de resposta ao item no modelo de 3 parâmetros (3PL)
utilizado no ENEM.
o Parâmetros:
theta: Habilidade do candidato.
a, b, c: Parâmetros específicos da questão.
2. Função imageApi(code)
o Descrição: Gera a URL de uma imagem contendo itens de prova com base no código
fornecido.
o Parâmetros:
code: Código da questão.
3. Função ocrImage(code)
o Descrição: Realiza OCR em uma imagem de uma questão de prova, retornando o texto
extraído.
o Parâmetros:
code: Código da questão.
4. Função find_theta(a, b, c, targ)
o Descrição: Encontra o valor de theta que resulta em um percentil específico de acerto
(targ).
o Parâmetros:
a, b, c: Parâmetros específicos da questão.
targ: Percentil alvo de acerto.
5. Função find_quantile(c)
o Descrição: Calcula o percentil correspondente a uma habilidade específica (c).
6. Função get_prova_string(ano, co_prova)
o Descrição: Retorna uma string identificando o tipo de prova com base no ano e código da
prova.
7. Função thetaToCsv(provas, dfItens)
o Descrição: Calcula os valores de theta para diferentes percentis e realiza operações
relacionadas, adicionando os resultados ao DataFrame.
8. Função Make()
o Descrição: Realiza a leitura dos dados de diferentes anos do ENEM, aplica a análise de theta
às questões e salva os resultados em arquivos CSV e Excel.
Dependências:
cv2: OpenCV, para manipulação de imagens.
numpy: Para operações numéricas.
requests: Para requisições HTTP.
io.BytesIO: Para manipulação de dados binários em memória.
pandas: Para manipulação de dados tabulares.
matplotlib.pyplot: Para visualizações gráficas.
pytesseract: Para a utilização do OCR.
os: Para operações de sistema.
EduStarAmericas
EduStarAmericas
Build: 1.66; V2.1;
5
Execução:
Certifique-se de ter as dependências instaladas (cv2, numpy, requests, io, pandas, matplotlib,
pytesseract, os).
O arquivo executável do Tesseract (Tesseract.exe) deve estar localizado na pasta ./Tesseract/.
O código gera arquivos CSV e Excel contendo os resultados da análise.
Notas Adicionais:
O script está configurado para analisar microdados dos anos de 2014 a 2022.
A função Make() executa todo o processo, desde a leitura dos dados até a geração dos resultados.
Certifique-se de ter os arquivos de dados CSV disponíveis no mesmo diretório e os Arquivos no
Banco de Itens
EduStarAmericas
EduStarAmericas
Build: 1.66; V2.1;
6
1.1 Gerador: Helper (putHabOnItem):
Este documento apresenta uma visão técnica do helper putHabOnItem, destinado a adicionar informações de
habilidades ausentes nos microdados da prova do ENEM de 2015 PPL (solicitação via Lei de Acesso à
Informação). O script, escrito em Python, utiliza a biblioteca pandas para manipulação de dados.
Funcionalidades Principais:
1. Leitura de Dados:
o O script lê os dados da prova do ENEM de 2015 PPL de dois arquivos CSV
(E_ITENS_PROVA_2015.csv e lai2015process.xlsx).
2. Preenchimento de Habilidades Ausentes:
o Identifica as questões que não possuem informação de habilidade (CO_HABILIDADE igual a
31).
o Busca as informações de habilidade correspondentes aos códigos de questões na planilha
lai2015process.xlsx.
o Preenche as habilidades ausentes no DataFrame principal (dItens2015) com as informações
obtidas.
3. Geração de Novos Arquivos:
o Gera um novo arquivo CSV (ITENS_PROVA_2015.csv) contendo os dados atualizados.
o Gera um arquivo Excel (ITENS_PROVA_2015.xlsx) para facilitar a visualização dos dados.
Execução:
Certifique-se de ter a biblioteca pandas instalada (pip install pandas).
Execute o script, garantindo que os arquivos E_ITENS_PROVA_2015.csv e lai2015process.xlsx
estejam no mesmo diretório.
O código atualiza as habilidades no DataFrame principal (dItens2015) e gera novos arquivos CSV e
Excel.
Notas Adicionais:
Devolva o arquivo corrigido para a pasta principal do gerador.
Certifique-se de ter permissões de leitura e escrita no diretório onde os arquivos são salvos.
EduStarAmericas
EduStarAmericas
Build: 1.66; V2.1;
7
1.2 Gerador: Helper Relatório de Itens - relatorio_itens.py:
Este documento fornece uma visão técnica do script Python relatorio_itens.py, que é responsável por
gerar relatórios de itens sem correção comentada no banco de itens. O script utiliza diversas bibliotecas,
como pandas, plotly, genanki, fpdf, requests, e outras, para realizar tarefas específicas relacionadas à análise
de itens do ENEM.
Funcionalidades Principais:
1. Geração de Relatórios em PDF:
o O script gera relatórios em PDF para questões sem correção comentada, agrupadas por área
de conhecimento (Ciências Humanas, Linguagens, Ciências da Natureza e Matemática).
o Inclui informações relevantes, como número da questão, ano, habilidade, proficiência
estimada e link para a resolução no YouTube (quando disponível).
2. Tratamento de Dados:
o Manipula dados provenientes de arquivos CSV para obter informações sobre questões sem
correção comentada.
o Organiza e processa os dados de forma a criar relatórios estruturados e visualmente atraentes.
3. Geração de Imagens e Códigos de Barras:
o Baixa imagens das questões do ENEM a partir de URLs e as integra nos relatórios.
o Gera códigos de barras para identificação das questões.
4. Multithreading:
o Utiliza multithreading para processar áreas de conhecimento simultaneamente, otimizando o
desempenho.
Execução:
O script requer as bibliotecas pandas, plotly, genanki, fpdf, requests, Pillow, string, os, seaborn,
matplotlib, wordcloud, barcode e concurrent.futures.
Certifique-se de ter os diretórios corretos (como "images") e as imagens de fundo necessárias
("fundo.png" e "fundo2.png") no mesmo diretório do script.
Execute o script utilizando Python 3.
Saída:
O script gera arquivos PDF com relatórios para cada área de conhecimento sem correção comentada.
Os arquivos de saída são nomeados como "Sem_Correcao_{AreaDeConhecimento}.pdf" (ex:
Sem_Correcao_Humanas.pdf).
Notas Adicionais:
O script lida com questões que não possuem correção comentada e organiza as informações de
maneira clara e visualmente atraente nos relatórios.
Certifique-se de ter permissões de leitura e escrita nos diretórios onde os arquivos são salvos.
EduStarAmericas
EduStarAmericas
Build: 1.66; V2.1;
8
2. MCi (Módulo comum integrado):
Este módulo automatiza a criação de flashcards Anki e um PDF contendo questões do Enem por
Habilidades, incluindo imagens, respostas e links para resoluções no YouTube. Também tem como
funcionalidade gerar listas de treino e de revisão para alunos. A documentação abordará as principais
funções e processos envolvidos.
2.1 MCi Listas e Flashcards por Habilidades:
Estrutura do Código
Funções Principais:
generate_random_number()
Descrição: Gera um número aleatório para identificar o baralho Anki.
Retorno: Um número inteiro aleatório.
remover_caracteres_invalidos(texto)
Descrição: Remove caracteres inválidos de uma string.
Entrada: Uma string.
Retorno: A string sem os caracteres inválidos.
toYoutube(textPrompt)
Descrição: Cria um link de pesquisa no YouTube com base em um prompt de texto.
Entrada: Uma string de texto.
Retorno: Uma URL de pesquisa no YouTube.
Capa(dItens)
Descrição: Gera uma nuvem de palavras a partir das palavras-chave associadas às questões.
Entrada: Um DataFrame (dItens) contendo informações sobre as questões.
Saída: Uma imagem PNG com a nuvem de palavras.
questHab(dItens)
Descrição: Cria flashcards Anki, PDF com questões e um arquivo PDF com o gabarito.
Entrada: Um DataFrame (dItens) contendo informações sobre as questões.
Saída: O nome do arquivo PDF gerado.
Detalhes sobre a Geração de Flashcards
1. Geração do Baralho e Modelo Anki:
o Um baralho e modelo Anki são criados usando a biblioteca genanki.
o O modelo inclui campos como 'Questão', 'Resposta' e 'Imagem'.
2. Download de Imagens:
o As imagens das questões e códigos de barras são baixadas da web.
3. Criação dos Flashcards:
o Cada flashcard é um objeto genanki.Note com campos preenchidos com dados da questão.
4. Criação do Pacote Anki:
o Um pacote Anki é gerado com os flashcards e as imagens.
EduStarAmericas
EduStarAmericas
Build: 1.66; V2.1;
9
Detalhes sobre a Geração do PDF
1. Criação do PDF:
o Um PDF é criado usando a biblioteca fpdf.
2. Adição de Páginas e Imagens:
o A primeira página inclui a nuvem de palavras.
o Páginas subsequentes contêm questões e imagens.
o A última página contém o gabarito em forma de tabela.
3. Adição de Links:
o Links para resoluções no YouTube são incorporados ao PDF.
Observações
Certifique-se de ter todas as bibliotecas necessárias instaladas antes de executar o código.
O código utiliza o serviço de hospedagem niedsonemanoel.com.br para obter imagens; certifique-
se de que o serviço está acessível.
Pode ser necessário ajustar o código para execução em ambientes diferentes.
Aviso: Este módulo foi projetado para ser executado em ambientes que suportam as bibliotecas
mencionadas. A execução em outros ambientes pode exigir modificações.
EduStarAmericas
EduStarAmericas
Build: 1.66; V2.1;
10
2.2 MCi Listas de Treino e Revisão:
Este módulo automatiza a criação de flashcards Anki e um PDF contendo questões de exames, incluindo
imagens, respostas e links para resoluções no YouTube. O código é projetado para ser versátil, suportando
diferentes áreas de conhecimento (Matemática, Humanas, Natureza e Linguagens).
Variáveis de Entrada
nome (str): Nome do usuário ou identificação para o arquivo de saída.
nota (float): Nota do usuário na área específica (Matemática, Humanas, Natureza ou Linguagens).
Ajustes de Sensibilidade do Algoritmo
Esses ajustes são utilizados para equilibrar as questões nos flashcards gerados.
aj165 (int): Ajuste para a sensibilidade do algoritmo na probabilidade de ((c+1)/2)%.
aj265 (int): Ajuste para a sensibilidade do algoritmo na probabilidade de ((c+1)/2)%.
aj399 (int): Ajuste para a sensibilidade do algoritmo na probabilidade de 99%.
aj499 (int): Ajuste para a sensibilidade do algoritmo na probabilidade de 99%.
Funções Principais
questionBalance_65(name, nota_CN, dfResult)
Gera um conjunto de flashcards Anki e um arquivo .pdf contendo questões equilibradas para a probabilidade
de ((c+1)/2)%.
Parâmetros:
o name (str): Nome do arquivo de saída.
o nota_CN (float): Nota do usuário na área específica.
o dfResult (DataFrame): DataFrame contendo os dados das questões.
Retorno:
o str: Nome do arquivo gerado.
questionBalance_99(name, nota_CN, dfResult)
Gera um conjunto de flashcards Anki e um arquivo .pdf contendo questões equilibradas para a probabilidade
de 99%.
Parâmetros:
o name (str): Nome do arquivo de saída.
o nota_CN (float): Nota do usuário na área específica.
o dfResult (DataFrame): DataFrame contendo os dados das questões.
Retorno:
o str: Nome do arquivo gerado.
EduStarAmericas
EduStarAmericas
Build: 1.66; V2.1;
11
Observações
O código suporta diferentes áreas de conhecimento, representadas pelas siglas 'MT' (Matemática),
'CH' (Ciências Humanas), 'CN' (Ciências da Natureza) e 'LC' (Linguagens e Códigos). A área
específica é definida pela variável prova.
Certifique-se de adaptar as configurações específicas do Anki e do ambiente de execução, pois
algumas funcionalidades podem variar dependendo do ambiente.
Explicação Parâmetros:
aj165: Até que proficiência a lista de treino vai no máximo
o Ex: Nota aluno 600, aj165: 170, máximo proficiência = 770 (600+170)
aj265: Até que proficiência a lista de treino vai no mínimo
o Ex: Nota aluno 600, aj265: 50, mínimo proficiência = 550 (600-50)
Range lista de Treino neste exemplo: questões de 550 até 770
aj399: Até que proficiência a lista de revisão vai no máximo
o Ex: Nota aluno 600, aj399: 170, máximo proficiência = 770 (600+170)
aj499: Até que proficiência a lista de treino vai no mínimo
o Ex: Nota aluno 600, aj499: 40, máximo proficiência = 560 (600-40)
Range lista de Revisão neste exemplo: questões de theta_99 de 560 até 770
2.2.1 Parâmetros específicos das Matérias (Padrão experimental):
Linguagens
aj165 (int): 170
aj265 (int): 30
aj399 (int): 120
aj499 (int): 20
Humanas
aj165 (int): 180
aj265 (int): 40
aj399 (int): 130
aj499 (int): 20
Natureza
aj165 (int): 150
aj265 (int): 25
aj399 (int): 110
aj499 (int): 10
Matemática
aj165 (int): 200
aj265 (int): 30
aj399 (int): 130
aj499 (int): 10
*Obtido experimentalmente.
EduStarAmericas
EduStarAmericas
Build: 1.66; V2.1;
12
2.3 MCi Clusterização:
Este módulo automatiza o processo de clusterização de questões de exames, utilizando técnicas de
aprendizado não supervisionado (clustering) para agrupar questões semelhantes com base em uma
característica específica. O código é projetado para ser versátil, suportando diferentes áreas de conhecimento
(Matemática, Humanas, Natureza e Linguagens).
Variáveis de Entrada
Disciplina (str): Área de conhecimento da disciplina a ser analisada (Matemática, Humanas,
Natureza ou Linguagens).
colunaCluster (str): Característica específica utilizada para a clusterização (e.g., 'theta_065',
'theta_080', 'theta_099', etc.).
Funções Principais
cluster_questions(Disciplina, colunaCluster)
Realiza a clusterização de questões e exporta os resultados para arquivos CSV.
Parâmetros:
o Disciplina (str): Área de conhecimento da disciplina a ser analisada.
o colunaCluster (str): Característica específica utilizada para a clusterização.
Saída:
o Arquivos CSV exportados para cada cluster.
o Arquivo CSV consolidado com as atribuições de cluster.
Observações
A variável colunaCluster define a característica utilizada para a clusterização, podendo ser a
proficiência em diferentes percentis ou outras características relevantes.
O código utiliza a biblioteca PyCaret para simplificar o processo de clustering e avaliação de
modelos.
A clusterização é útil para identificar padrões e semelhanças entre questões, possibilitando uma
análise mais aprofundada do conjunto de questões disponíveis.
O código exporta arquivos CSV separados para cada cluster, permitindo uma análise individual de
cada grupo de questões.
Certifique-se de adaptar as configurações específicas do ambiente de execução, como o caminho de
exportação de arquivos (os.chdir), ao utilizar o código fora do ambiente Colab.
EduStarAmericas
EduStarAmericas
Build: 1.66; V2.1;
13
3. TRI
3.1 Criação de Simulado (com 30 habilidades)
Este módulo tem como objetivo automatizar a geração de simulados para diferentes disciplinas do ENEM
(Matemática, Humanas, Natureza ou Linguagens). O código extrai questões de acordo com critérios
específicos, cria um arquivo CSV com os dados do simulado e um arquivo PDF com as questões e o cartão
resposta.
Descrição Geral do Fluxo de Execução
1. Carregamento dos Itens:
o Leitura de um arquivo CSV contendo itens previamente ordenados por triagem,
disponibilizado em um repositório online.
2. Filtragem de Itens:
o Seleção de itens específicos para a disciplina escolhida.
o Filtragem de itens de habilidades específicas (entre 1 e 30).
o Exclusão de itens abandonados.
3. Seleção de Questões Únicas e Repetidas:
o Escolha de uma questão única para cada habilidade (1 a 30).
o Seleção de 12 questões adicionais permitindo repetições, com no máximo 3 repetições por
habilidade.
4. Verificação de Todas as Habilidades:
o Verificação se todas as 30 habilidades estão presentes no conjunto de questões.
o Se faltarem habilidades, seleção de itens adicionais para as habilidades ausentes.
5. Análises Estatísticas do Simulado:
o Cálculo da proficiência da questão mais difícil e mais fácil.
o Geração de gráficos que mostram a distribuição de questões por prova, ano e gabarito.
6. Exportação de Dados:
o Criação de um arquivo CSV contendo os dados do simulado.
o Exportação do simulado em formato CSV.
7. Geração do Cartão Resposta em PDF:
o Criação de um arquivo PDF contendo as questões do simulado e um cartão resposta para o
aluno.
Detalhes Técnicos
Dependências
O código faz uso das seguintes bibliotecas Python:
o numpy, pandas: Manipulação e análise de dados.
o matplotlib, seaborn: Visualização de dados e criação de gráficos.
o fpdf: Geração de arquivos PDF.
o requests: Requisições HTTP para download de imagens.
o PIL: Processamento de imagens.
o os: Manipulação de sistema de arquivos.
EduStarAmericas
EduStarAmericas
Build: 1.66; V2.1;
14
Configurações
Certifique-se de que as bibliotecas mencionadas acima estão instaladas no ambiente de execução.
O código contém URLs para imagens e dados externos, e a execução pode depender da
conectividade com a internet.
Utilização
Para gerar um simulado, basta chamar a função gera_simulado(Disciplina), onde Disciplina é
uma string que pode ser "MT", "CH", "CN" ou "LC".
A função retornará:
o Um arquivo CSV contendo os dados do simulado.
o Um arquivo PDF com as questões do simulado e um cartão resposta.
EduStarAmericas
EduStarAmericas
Build: 1.66; V2.1;
15
3.2 Correção do Simulado
Este módulo realiza a correção automática de um simulado TRI (Teoria de Resposta ao Item) gerado
anteriormente. O código calcula a nota TRI para um candidato com base nas respostas fornecidas e nos
parâmetros dos itens.
Descrição Geral do Fluxo de Execução
1. Carregamento dos Dados do Simulado:
o Leitura do arquivo CSV contendo os dados do simulado gerado anteriormente.
o Exibição de instruções para o usuário fazer o upload do arquivo CSV gerado.
2. Definição de Funções Matemáticas:
o calcular_probabilidade(theta, a, b, c): Calcula a probabilidade de uma resposta
correta dada a proficiência do candidato e os parâmetros do item.
o calcular_verossimilhanca(theta, a, b, c, x): Calcula a verossimilhança da resposta
do candidato para um conjunto de itens.
o encontrar_theta_max(a, b, c, x): Encontra o valor de proficiência (theta) que
maximiza a verossimilhança para o candidato.
3. Obtenção das Respostas do Candidato:
o O usuário fornece as respostas para cada questão do simulado.
o As respostas são validadas para garantir que são A, B, C, D, E ou X (questão anulada).
4. Cálculo da Nota TRI e Estatísticas:
o O código calcula a nota TRI para o candidato usando os parâmetros dos itens e as respostas
fornecidas.
o Exibição da pontuação TRI do candidato.
o Exibição do número de acertos.
5. Exibição de Parâmetros dos Itens e Respostas do Candidato:
o Exibição dos parâmetros dos itens (NU_PARAM_A, NU_PARAM_B, NU_PARAM_C).
o Exibição da matriz de respostas do candidato.
Detalhes Técnicos
Dependências
O código faz uso das seguintes bibliotecas Python:
o numpy, pandas: Manipulação e análise de dados.
o scipy: Cálculos científicos, incluindo otimização.
Observações
Certifique-se de ter as permissões necessárias para realizar o upload de arquivos no ambiente de
execução.
O código utiliza otimização para encontrar o valor de proficiência (theta) que maximiza a
verossimilhança do candidato.
EduStarAmericas
EduStarAmericas
Build: 1.66; V2.1;
16
3.3 Correção TRI das listas por Habilidade
Este módulo realiza a análise de itens específicos relacionados a uma habilidade escolhida em uma
disciplina do ENEM. O código utiliza a Teoria de Resposta ao Item (TRI) para calcular a nota TRI de um
candidato com base nas respostas fornecidas e nos parâmetros dos itens associados a uma habilidade
específica.
Descrição Geral do Fluxo de Execução
1. Carregamento dos Dados dos Itens:
o Leitura dos dados dos itens a partir de um arquivo CSV hospedado online.
o Filtro dos itens com base na disciplina e habilidade escolhidas.
2. Definição de Funções Matemáticas:
o calcular_probabilidade(theta, a, b, c): Calcula a probabilidade de uma resposta
correta dada a proficiência do candidato e os parâmetros do item.
o calcular_verossimilhanca(theta, a, b, c, x): Calcula a verossimilhança da resposta
do candidato para um conjunto de itens.
o encontrar_theta_max(a, b, c, x): Encontra o valor de proficiência (theta) que
maximiza a verossimilhança para o candidato.
3. Obtenção das Respostas do Candidato:
o O usuário fornece as respostas (1 para correta, 0 para incorreta) para cada questão associada à
habilidade escolhida.
4. Cálculo da Nota TRI e Exibição:
o O código calcula a nota TRI para o candidato usando os parâmetros dos itens e as respostas
fornecidas.
o Exibição da pontuação TRI do candidato para a habilidade escolhida.
Detalhes Técnicos
Dependências
O código faz uso das seguintes bibliotecas Python:
o numpy, pandas: Manipulação e análise de dados.
o scipy: Cálculos científicos, incluindo otimização.
Utilização
1. Execute o código no ambiente Colab.
2. Escolha a disciplina e a habilidade desejadas.
3. Forneça as respostas do candidato para as questões associadas à habilidade escolhida.
EduStarAmericas
EduStarAmericas
Build: 1.66; V2.1;
17
3.4 Curva CCI
Este módulo gera a Curva Característica do Item (CCI) com base nos parâmetros da Teoria de Resposta ao
Item (TRI). A CCI representa a relação entre a probabilidade de um candidato acertar uma questão e o nível
de proficiência do candidato.
Descrição Geral do Fluxo de Execução
1. Definição dos Parâmetros da TRI:
o O usuário insere os parâmetros a, b e c, que representam, respectivamente, os parâmetros de
discriminação, dificuldade e acerto ao acaso.
2. Cálculo da Probabilidade de Acerto:
o Utilizando os parâmetros fornecidos, calcula a probabilidade de um candidato acertar uma
questão para diferentes níveis de proficiência (theta).
3. Geração do Gráfico CCI:
o Gera o gráfico da CCI, representando a probabilidade de acerto em função do nível de
proficiência.
o Destaca a proficiência que resulta em uma probabilidade pré-determinada (usualmente 50%).
Detalhes Técnicos
Dependências
O código faz uso das seguintes bibliotecas Python:
o numpy, pandas: Manipulação e análise de dados.
o matplotlib.pyplot: Geração de gráficos.
o scipy: Cálculos científicos, incluindo otimização.
Utilização
1. Execute o código no ambiente Colab.
2. Insira os valores dos parâmetros a, b e c.
3. O gráfico da CCI será gerado, mostrando a relação entre a probabilidade de acerto e o nível de
proficiência.
Observações
O código utiliza uma abordagem de busca binária para encontrar o nível de proficiência que resulta
na probabilidade desejada.
A CCI é uma ferramenta importante na análise de itens em avaliações educacionais, fornecendo
insights sobre a sensibilidade do item à habilidade do candidato.
Para informações mais detalhadas sobre a implementação de funções específicas, consulte o código-fonte
disponível no link original do Colab.
EduStarAmericas
EduStarAmericas
Build: 1.66; V2.1;
18
4. Análises de Grupo
Este módulo automatiza a análise de dados do Exame Nacional do Ensino Médio (ENEM) para uma
disciplina específica (Matemática, Humanas, Natureza ou Linguagens) e um ano escolhido. O código extrai
os microdados do ENEM do INEP, realiza análises estatísticas, e exporta os resultados para um arquivo
Excel e um arquivo de texto.
Variáveis de Entrada
ANO (str): Ano do ENEM a ser analisado (2014 a 2023).
Disciplina (str): Disciplina específica do ENEM a ser analisada (Matemática, Humanas, Natureza
ou Linguagens).
MICRODADOS_2014 a MICRODADOS_2023 (str): Links para os arquivos ZIP contendo os
microdados do ENEM para cada ano.
Funções Principais
analise_enem(ANO, Disciplina, MICRODADOS)
Realiza a análise dos microdados do ENEM, gerando estatísticas e exportando os resultados para arquivos
Excel e texto.
Parâmetros:
o ANO (str): Ano do ENEM a ser analisado.
o Disciplina (str): Disciplina específica do ENEM a ser analisada.
o MICRODADOS (str): Link para o arquivo ZIP contendo os microdados do ENEM para o
ano especificado.
Saída:
o Arquivo Excel contendo estatísticas sobre a relação entre acertos e notas.
o Arquivo de texto contendo a distribuição percentual de notas em intervalos de 100 pontos.
Observações
O código utiliza os microdados do ENEM disponibilizados pelo INEP para o ano escolhido.
Realiza a filtragem dos dados para considerar apenas participantes presentes e com notas não nulas
na disciplina específica.
Calcula a quantidade de alunos que tiraram determinada nota ou mais na disciplina, em percentual
total de participantes e em percentual considerando apenas alunos válidos.
Gera estatísticas sobre a relação entre a quantidade de acertos e as notas, exportando essas
informações para um arquivo Excel.
Exporta a distribuição percentual de notas em intervalos de 100 pontos para um arquivo de texto.
EduStarAmericas
EduStarAmericas
Build: 1.66; V2.1;
19
5. Notebooks .ipynb
Confidencial até a liberação do algoritmo publicamente em 2025.
Porque confidencial? Os notebooks são a expressão modular deste código, qualquer
pessoa até mesmo partindo de um celular consegue utiliza-los sem precisar de muito
conhecimento técnico. A liberação se dará quando o algoritmo for liberado para pesquisadores
e professores em momento oportuno.
5.1 Links Notebooks:
Cluster / Questions
Gráfico CCI/TRI
Gerador
CriarSimulado
Hab_Anki/Pdf
Microdados Acerto x Nota
TRI/Habilidades
Corretor TRI/Simulados
Github
*Se você recebeu o arquivo com os Links, pode utilizar em suas análises (Ctrl+enter), mas não divulgue ainda.
EduStarAmericas
EduStarAmericas
Build: 1.66; V2.1;
20
6. Roadmap
Aqui descrevemos nossas metas durante a existência do ESA e marcamos em OK (verde as
concluídas, em ABAN (vermelho) as abandonadas e em DOING as que estão sendo realizadas
2023
o Gerar gráfico CCI
o Perfil de Nota x Renda: demanda alto processamento e dados são pouco úteis
o Estimar nota TRI por Regressão Linear: não há demanda.
o Indicar proficiência do Item ((c+1)/2)
o Gerar PDF de Habilidades ordenas pela proficiência
o Algoritmo gamificado de realização de simulados/mini simulados
o Calcular a nota TRI em Python.
o Indicar questões pela probabilidade de 99% e ((c+1)/2) de acerto
o Leitura óptica (OCR dos Itens)
o Criar simulado autoral e corrigir via máxima verossimilhança: funciona, precisa de ajustes
o Clusterizar alunos, questões e desempenhos
o Buscar resolução pela OCR dos itens no Youtube
o Resolução comentada dos Itens
o Mínimo de 5 anos de prova no banco
o Interfaces visuais e BetaTest público
o Contar acertos e tri nos microdados de qualquer ano
Saldo de 4096 questões no Banco de Itens. (3 injeções)
I1: 2021, 2020 e 2019 (fev)
I2: 2022, 2018 e 2017 (ago)
I3: 2016, 2015 e 2014 (dez)*
2024
o Publicização dos dados via página @enemaster.app
o Inserir dados ENCCEJA e 2023 no banco de itens
o Estimar parâmetros TRI para questões de vestibulares e utiliza-las de maneira equivalente
aos do ENEM.
2025
o Liberação do código fonte do EAS para pesquisadores, professores e interessados sob a licença
MIT.
EduStarAmericas
EduStarAmericas
Build: 1.66; V2.1;
21
7. Agradecimentos
Quero dedicar uma expressão sincera de gratidão aos professores e alunos extraordinários que foram peças-
chave na concretização deste projeto.
Professores:
Mateus F. Prado
Nathália Lopes
Hassã
Thales Silva
Diego Rubinakes
Selma Calgoroto
Alunos:
Henrique Angelim
Daniel Rubens
Eduardo Santos
Maria Leite
Wenderson Santos
Luiggi Crivelenti
Isaque Araújo
Maria Eduarda Bittencourt
João Pedro Lopes
Gabriel Carvalhal
Érik Augusto
Cada um de vocês trouxe uma perspectiva única, expertise e entusiasmo que elevaram este projeto a novos
patamares. Agradeço sinceramente por sua incrível colaboração e pelo compromisso.
Seu impacto positivo permanecerá como parte integral da jornada deste projeto. Obrigado por serem uma
fonte de inspiração e por compartilharem seus conhecimentos e talentos.
EduStarAmericas
EduStarAmericas
Build: 1.66; V2.1;
22
8. Anexos
8.1 Orientação (INEP via LAI) Curva CCI
Curva Característica do Item
Para apresentar graficamente a probabilidade de uma resposta correta em função da proficiência (θ), utiliza-se o
gráfico da curva característica do item. Esse gráfico mostra a relação entre a probabilidade de uma pessoa fornecer
uma resposta correta para um item, em função do seu desempenho. O gráfico é uma relação monotonicamente
crescente entre a proficiência e a probabilidade de resposta correta ao item. Por se tratar de probabilidade, o eixo
das ordenadas apresenta a assíntota inferior igual 0 e uma assíntota superior igual a 1. O eixo das abcissas, em geral,
tem o zero como ponto central do eixo. No caso do Enem, em que foi adotado uma escala com média 500 e desvio-
padrão 100, pode ser utilizado o valor 500 como ponto central do eixo das abcissas.
A probabilidade de acerto ao item é dada pela função
󰇛= 1,,,󰇜=+󰇛1 󰇜1
1 + ()
Em que
a é o parâmetro de discriminação
b é o parâmetro de dificuldade
c é o parâmetro de acerto casual
θ é a proficiência (θ)
e função exponencial natural
O gráfico pode ser obtido a partir da indicação dos valores de θ (valores de θ no intervalo em que se pretende
observar a curva do item) e as probabilidade para esses valores de θ. Por exemplo, para um item com parâmetros
a=1,5, b=1 e c=0,2, teremos as seguintes probabilidades.
󰇛= 11,5; 1; 0,2; 󰇜= 0,2 + 󰇛10,2󰇜1
1 + 1,5(1)
Tabela- Probabilidade de acerto ao item
θ
󰇛= 11,5; 1; 0,2; 󰇜
-3
0,202
-2
0,209
-1
0,238
0
0,346
1
0,600
2
0,854
3
0,962
A probabilidade de acerto obtida para cada um dos pontos de θ é plotada em um gráfico de linha de forma que os
valores de θ estejam no eixo das abcissas e os valores das probabilidades no eixo das ordenadas.
EduStarAmericas
EduStarAmericas
Build: 1.66; V2.1;
23
8.2 Exemplo de gráfico de curva CCI
Fonte: O autor, gerado pela ESA no módulo notebooks/cci.py
EduStarAmericas
EduStarAmericas
Build: 1.66; V2.1;
24
8.3 Exemplo de questão gerada pelo MCi
Fonte: O autor, gerada pelo algoritmo MCi anki_hab.py, para Humanas (CH) e H1
EduStarAmericas
EduStarAmericas
Build: 1.66; V2.1;
25
8.4 Exemplo de Distribuição da Relação Acerto x Nota
*A saída é referente ao arquivo excel.
EduStarAmericas
EduStarAmericas
Build: 1.66; V2.1;
26
8.5 Licença de Uso
Copyright (c) 2024 N.E.A, Brito.
Permission is hereby granted, partially free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to handle the
Software, with the rights to use without selling copies of the Software, subject to the
following conditions:
The above copyright notice and this permission notice shall be included in all copies
or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS," WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE, AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY, WHETHER IN AN ACTION OF
CONTRACT, TORT, OR OTHERWISE, ARISING FROM, OUT OF, OR IN CONNECTION WITH THE SOFTWARE
OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
RECIPIENTS MUST, WHENEVER USING THIS ALGORITHM, WHETHER GRATUITOUSLY OR FOR A FEE,
MAINTAIN SCHOLARSHIP DISTRIBUTION PROGRAMS OR EQUIVALENT FOR LOW-INCOME STUDENTS. THEY
MUST ALWAYS CITE (N.E.A, BRITO) AND USE THE TERMINOLOGY "ENEMASTER.APP," AND ARE
PROHIBITED FROM USING DEVELOPMENT NAMES (ESA) EDUSTARAMERICAS.
Direitos autorais (c) 2024 N.E.A, Brito.
É concedida permissão, de forma parcialmente gratuita, a qualquer pessoa que obtenha
uma cópia deste software e dos arquivos de documentação associados (o "Software"), para
lidar com o Software, com os direitos de usar SEM vender cópias do Software, sujeitas
às seguintes condições:
O aviso de direitos autorais acima e este aviso de permissão devem ser incluídos em
todas as cópias ou partes substanciais do Software.
O SOFTWARE É FORNECIDO "COMO ESTÁ", SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU
IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A
UM DETERMINADO PROPÓSITO E NÃO VIOLAÇÃO. EM NENHUM CASO OS AUTORES OU TITULARES DE
DIREITOS AUTORAIS SERÃO RESPONSÁVEIS POR QUALQUER RECLAMAÇÃO, DANOS OU OUTRA
RESPONSABILIDADE, QUER EM UMA AÇÃO DE CONTRATO, DELITO OU OUTRA FORMA, DECORRENTE DE,
OU EM CONEXÃO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NO SOFTWARE.
OS REDISTRIBUIDORES DEVEM SEMPRE QUE UTILIZAR ESSE ALGORITMO, DE FORMA GRATÚITA OU PAGA
MANTER PROGRAMAS DE DISTRIBUIÇÃO DE BOLSAS DE ESTUDO OU EQUIVALENTE PARA ALUNOS DE
BAIXA RENDA.
SEMPRE DEVERÃO CITAR (N.E.A, BRITO) E UTILIZAR A TERMINOLOGIA ENEMASTER.APP, SENDO
VEDADO OS NOMES DE DESENVOLVIMENTO (ESA) EDUSTARAMERICAS
Software em processo de registro no INPI.
EduStarAmericas
EduStarAmericas
Build: 1.66; V2.1;
27
9. Referências
Instituto Nacional de Estudos e Pesquisas Educacionais Anísio Teixeira (Inep). (2011). Nota técnica:
procedimento de cálculo das notas do Enem. Acesso em 2023`, disponível em GOV.BR:
https://download.inep.gov.br/educacao_basica/enem/nota_tecnica/2011/nota_tecnica_procedimento_
de_calculo_das_notas_enem_2.pdf
INSTITUTO NACIONAL DE ESTUDOS E PESQUISAS EDUCACIONAIS ANÍSIO TEIXEIRA. (12 de 01
de 2024). Microdados do Enem (2014 a 2022). Fonte: Microdados Enem: https://www.gov.br/inep/pt-
br/acesso-a-informacao/dados-abertos/microdados/enem